package com.zjw.study.thread02_timer;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 创建一个定时器
 * 下文给出个别方法案例，详细请阅读Timer源码
 * 1.程序启动指定时间间隔执行
 * 2.指定时间点执行
 * 3.程序启动后一段时间，循环一定时间间隔执行
 * 
 * @author Administrator
 *
 */
public class TraditionalTimer01 {
	public static void main(String[] args) {
//		create01();
//		create02();
		create03();
	}
	
	/**
	 * 创建一个定时器，启动后多久（单位：毫秒）执行
	 */
	static void create01() {
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			
			@Override
			public void run() {
				System.out.println("创建一个1s后执行的定时器");
			}
		}, 1000);
	}
	
	/**
	 * 创建指定时间开始的定时器
	 */
	static void create02() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Calendar cal = Calendar.getInstance();
		//月要减一
		cal.set(2017, 9, 21,
				23, 24, 20);
		System.out.println(sdf.format(cal.getTime()));
		new Timer().schedule(new TimerTask() {
			
			@Override
			public void run() {
				System.out.println("指定时间的定时器执行啦，执行时间" + sdf.format(new Date()));
			}
		}, cal.getTime());
	}
	
	/**
	 * 指定程序启动后多久执行，以及循环执行的时间间隔
	 */
	static void create03() {
		new Timer().schedule(new TimerTask() {
			
			@Override
			public void run() {
				System.out.println("4s后执行，每1s执行一次");
			}
		}, 4000, 1000);
	}
	
}
